开发hexo主题的过程

experience

想开发主题的初衷,是因为实在找不到现成的我个人看了还比较满意的主题,妹有办法,我只能自己造轮子了,我仅仅拥有一些薄弱的基础,会点react,后端勉强会用express,可怜的项目经验仅是寒假的时候做了个微信小程序
hexo自身的文档几乎没有给我什么开发的参考,我google了一下开发的流程,大致上算是明白了,总的来说,开发需要用到两个技术,1 是模板,2 是 css,前者用来生成html,后者给网站加点样式,最终我选择了ejs+styl
写主题的过程算不上特别困难,但也不是很容易,是的,我说的就是hexoapi文档,不是我个人素质低所以骂他,而是真的写得有点大便,去看看评论,也有很多吐槽的
但 6 年前的api知道现在也没有改,也是让我有点意想不到的,至于这其中的原因,我暂且蒙在hexo api文档作者的菊花里

api reference

hexo 的api文档还是有点用的,虽然我基本靠控制台打印或者 google 得出用法

archive page

对于 archive page,post变量是所有文章的集合,按理来说,这应该是一个数组
不好意思,这居然是个对象,通过Object.keys发现这个对象有两个属性,data & length
顾名思义,data应该就是post数组了吧?
不好意思,data依然是个对象
令人匪夷所思的是,data对象的key居然是数组下标0,1,3...,那为什么要多次一举把他转化为对象呢?
我暂且蒙在 hexo 的菊花里…

获取post变量的最终方式为,page.posts['0']
post变量的keys

[ 'title', 'date', '_content', 'source', 'raw', 'slug', 'published', 'updated', 'comments', 'layout', 'photos', 'link', '_id', 'content', 'site', 'excerpt', 'more', 'path', 'permalink', 'full_source', 'asset_dir', 'tags', 'categories', 'prev', 'next', '__post' ]

tags & categorieskeysdata,length,熟悉的感觉又回来了,hexo,….

tags&categories

绕到最后,想要获取具体的tagscategories需要page.posts['1'].categories.data['0'].name.
所以遍历tags的方式就是

for (let i in Object.keys(post.tags.data)){
console.log(post.tags.data[i].name)
}

或者

post.tags.data.forEach(tag=>{
console.log(tag.name)
})

path

生成posturl

page.posts.data.forEach(post=>{
console.log(url_for(post.path))
})